home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 015 / oki1.arc / OKI.ASM next >
Assembly Source File  |  1985-12-18  |  17KB  |  644 lines

  1.  
  2.  
  3. NAME    OKI
  4.     PAGE    50,130
  5.     TITLE    OKI.COM    RITARI/MACK '85    
  6. ;
  7. ;******************************************************************************
  8. ;
  9. ;OKI.COM        -Setup Utility for Okidata92 printer
  10. ;    from an idea by Douglas Ritari; PC Tech J., Sep 84, p 79
  11. ;
  12. ;    Joseph MACK
  13. ;    Dept Chem., UMBC
  14. ;    5401 Wilkens Ave
  15. ;    Catonsville,MD,21228
  16. ;    (301)-455-2564 (12-5pm)
  17. ;
  18. ;    I hearby release this program into the public domain, Joseph MACK, Oct '85
  19. ;
  20. ;******************************************************************************
  21. ;
  22. ;prog constants
  23.         cr    equ    13
  24.         lf    equ    10
  25. ;
  26. ;
  27. MAIN    SEGMENT    PARA    PUBLIC    'CODE'
  28.         ORG    100H
  29. START    PROC    FAR
  30. ;
  31.         ASSUME    CS:MAIN
  32.         ASSUME    DS:MAIN
  33.         ASSUME    SS:MAIN
  34.         ASSUME    ES:MAIN
  35. ;
  36.         JMP    SSTART    ;Jump to real start of prog
  37. ;
  38. ;************************INITIALISE DATA VARIABLES*****************************
  39. ;constants initialised at load time, not at execution time
  40. ;
  41. SW DB    0    ;Switch for HEX '/' seq.-either '0' or 'FFH'
  42. SIXTEEN    DB    16    ;the number '16' used in hex conversion -mul
  43. TESTPR    DB    0    ;Switch to test if any output was produced
  44. NUM_DIGITS    DB    0    ;Number of hex digits produced-'0' or '1'
  45. FD_OOR    DB    0    ;first digit out of range
  46. HEX        DB    0    ;hex accumulator
  47. PARM    DB    0    ;Move param to here -1 byte at a time
  48. ;
  49. ;******************************************************************************
  50. ; BEGIN PROG- SAVE RETURN ADDRESS FOR DOS
  51. ;******************************************************************************
  52. ;
  53. SSTART:
  54.         PUSH    DS    ;Save PSP Seg address
  55.         MOV    AX,0
  56.         PUSH    AX    ;Save return address offset (PSP+0)
  57. ;
  58. ;***************CHECK PRINTER***************************************************
  59. ;
  60.         PUSH    AX
  61.         PUSH    DX        ;save registers
  62.         MOV    AH,02    ;read port
  63.         MOV    DX,0        ;port 00=printer#1
  64.         INT    17H        ;read status
  65.         TEST    AH,8H    ;bit 3 on?-I/O error
  66.         JZ    BIT_3_OK
  67.         LEA    DX,prn_err_bit_3
  68.         CALL    PRMSG
  69.         POP    DX
  70.         POP    AX
  71.         RET            ;pop registers and exit to DOS
  72. BIT_3_OK:TEST    AH,20H    ;bit 5 on?-out of paper
  73.         JZ    BIT_5_OK
  74.         LEA    DX,prn_err_bit_5
  75.         CALL    PRMSG
  76.         POP    DX
  77.         POP    AX
  78.         RET            ;exit to DOS
  79. BIT_5_OK:POP     DX
  80.         POP    AX
  81. ;    
  82. ;got here if printer OK
  83. ;
  84. ;******************MOVE COUNT OF CHARACTERS INTO PARM AREA********************
  85. ;
  86.         MOV    SI,80H        ;Source string offset (within PSP)
  87.         MOV    DI,OFFSET PARM    ;dest string offset
  88.         CLD                ;Set 'forward' string operations
  89.         MOVSB            ;move # of params entered into 'PARM' variable
  90.         DEC    DI
  91. ;
  92. ;*******************SET UP PARM FIELD'S POINTERS*******************************
  93. ;
  94.         MOV    AL,PARM        ;Put number of char. in parm into AL register
  95.         MOV    CX,AX        ;      "                          CX
  96.         MOV    BX,OFFSET PARM    ;point to parms base address
  97.         CMP    CX,0            ;were no parms entered ?
  98.         JNE    SEARCH        ;param found
  99.         CALL    DEFAULT        ;end of search, no parms found-send defaults
  100.         RET                ;end program, return to DOS,(PSP and offset POPed)
  101. ;
  102. ;******************************************************************************
  103. ; PARMS WERE ENTERED- SEARCH FOR AND PROCESS PARAMETERS
  104. ;******************************************************************************
  105. ;
  106. SEARCH:    MOVSB            ;read in parm from prog.seg. prefix
  107.         DEC    DI            
  108.         MOV    AL,[BX]        ;move next parm to input reg
  109.         CMP    AL,' '        ;blank?
  110.         JE    SEARCH_END    ;ignore
  111.         CMP    AL,','        ;comma?
  112.         JE    SEARCH_END    ;ignore
  113. ;
  114.         CMP    AL,'a'        ;UC/lc?
  115.         JL    ALPH_HEX        ;do not modify this letter if lower than 'a'
  116.         AND    AL,223        ;reduce by 32, uncaps==>caps
  117. ;
  118. ALPH_HEX:CMP    SW,0            ;=1 hex sequence on,=0 off
  119.         JE    SLASH        ;expects alph input
  120.         CALL    HEXON        ;expects hex input
  121.         JMP    SEARCH_END
  122. ;
  123. ;got here if hex not on
  124. ;
  125. SLASH:    CMP    AL,'/'        ;hex sequence begun?
  126.         JE    SW_ON
  127.         CALL    ALPHA_ENTRY    ;expects alphabetic input
  128.         JMP    SEARCH_END    ;look for next char
  129. ;
  130. SW_ON:    MOV    SW,1            ;turn on hex sequence
  131. SEARCH_END:    LOOP SEARCH    ;get more input
  132. ;
  133. ;******************************************************************************
  134. ;Get here if no more parms available. Check for unpaired hex digits
  135. ;******************************************************************************
  136. ;
  137.         CMP    NUM_DIGITS,0    ;unpaired hexcodes? =0 paired, =1 unpaired?
  138.         JE    OUT_TEST
  139.         PUSH    DX
  140.         LEA    DX,err_msg_6    ;unpaired digits
  141.         CALL    PRMSG    
  142.         POP    DX
  143. ;
  144.         CALL    DISP_CHAR        ;ouput unpaired digit
  145. ;
  146. OUT_TEST:    CMP    TESTPR,1    ;=0 no valid output
  147.         JE    SUCCESS
  148.         CALL    DEFAULT
  149. ;
  150. SUCCESS:    PUSH    DX
  151.         LEA    DX,success_msg
  152.         CALL    PRMSG
  153.         POP    DX
  154. ;
  155.         RET                ; to DOS
  156. ;
  157. ;*************End of prog proc*************************************************
  158. ;
  159. START    ENDP        ;end main
  160. ;
  161. ;******************************************************************************
  162. ;
  163. ;        ORG    200H
  164. ;
  165. PRMSG    PROC NEAR
  166.         PUSH    AX        ;int 21h scrambles AX
  167.         MOV    AH,9        ;print string instruction
  168.          INT    21H        ;print DX msg
  169.         POP    AX
  170.         RET
  171. PRMSG    ENDP
  172. ;
  173. ;*************Escape routine, send escape code to printer**********************
  174. ;
  175. ESCAPE    PROC    NEAR
  176.         PUSH    AX            ;save potential char to be printed on stack
  177.         MOV    AL,1BH        ;escape char =27 to out reg.
  178.         CALL    PRINTER        
  179.         POP    AX
  180.         CALL    PRINTER        ;send saved char
  181.         RET
  182. ESCAPE    ENDP
  183. ;
  184. ;*************printing s/r- all done from here**********************************
  185. ;
  186. ;send char in AL to printer
  187. ;
  188. PRINTER     PROC    NEAR
  189.         MOV    TESTPR,1        ;valid output has been produced
  190.         MOV    DX,0            ;set register for printer output INT
  191.         MOV    AH,0            ;"
  192.         INT    17H            ;call printer driver in BIOS
  193.         RET
  194. PRINTER    ENDP
  195. ;
  196. ;*************Edit for valid hex numbers ***************************************
  197. ;
  198. HEXON    PROC NEAR            ;tests for valid hex digit,
  199.                         ;if OK calls HEXMATH,    otherwise sends errors
  200.         SUB    AL,30H        ;convert from ASCII to rel numbers (30H=0D)
  201.         JC    OUT_OF_RANGE    ;carry flag set, char<30H=0D, invalid param
  202.         CMP    AL,9            ;check for digit >9
  203.         JBE    HEX_OK        ;valid number, jump to math routine call
  204.         SUB    AL,7            ;convert from ASCII to hex A-F
  205.         CMP    AL,0FH
  206.         JA    OUT_OF_RANGE    ;error if hex>0FH
  207. ;
  208. HEX_OK:    CALL    HEXMATH        ;convert input param to hex
  209.         RET                ;to main
  210. ;
  211. ;Get here if hex parm not in range 0-0FH
  212. ;
  213. OUT_OF_RANGE:    CMP    NUM_DIGITS,0    ;=0 if first digit
  214.         JNE    SECOND_DIGIT
  215.         INC    NUM_DIGITS
  216.         MOV    FD_OOR,1        ;first digit out of range
  217.         CALL    HEX_ERR_MSG
  218.         RET
  219. ;
  220. SECOND_DIGIT:
  221.         CALL    HEX_ERR_MSG
  222.         MOV    SW,0            ;reset switches
  223.         MOV    NUM_DIGITS,0
  224.         MOV    FD_OOR,0
  225.         RET
  226. ;
  227. HEXON    ENDP
  228. ;
  229. ;********convert input params to hex numbers*********************************************************************
  230. ;
  231. HEXMATH    PROC    NEAR
  232.         CMP    NUM_DIGITS,0    ;0= 1st ,1= 2nd number
  233.         JNE    MATH2        ;jump and process second number
  234.         MUL    SIXTEEN        ;mult 1st number by 16
  235.         MOV    HEX,AL        ;clear & restore result in hex
  236.         INC    NUM_DIGITS        ;1st number processed
  237.         RET
  238. ;
  239. MATH2:    CMP    FD_OOR,1        ;0= valid
  240.         JE    END_MATH
  241.         ADD    AL,HEX        ;second hex number, total the two digits
  242.         MOV    NUM_DIGITS,0        ;clear digit var for further use
  243.         CALL PRINTER        ;send hex number in AL to printer
  244. ;
  245. END_MATH:MOV    FD_OOR,0        ;reset switches
  246.         MOV    SW,0
  247.         RET
  248. ;
  249. HEXMATH    ENDP
  250. ;
  251. ;********hex error messages****************************************************
  252. ;
  253. HEX_ERR_MSG    PROC    NEAR
  254. ;
  255.         PUSH    AX        ;int 21h scrambles AL
  256.         PUSH DX
  257.         LEA    DX,err_msg_1    ;invalid hex param
  258.         CALL    PRMSG
  259.         POP    DX
  260.         POP    AX
  261. ;
  262.         CALL    DISP_CHAR    ;output orig invalid char
  263. ;
  264.         PUSH    DX
  265.         LEA    DX,err_msg_4    ;parm ignored, execution continued
  266.         CALL    PRMSG
  267.         POP    DX
  268. ;
  269.         RET
  270. ;
  271. HEX_ERR_MSG    ENDP
  272. ;
  273. ;******************************************************************************
  274. ;
  275. DISP_CHAR    PROC    NEAR
  276. ;    
  277.         MOV    AL,[BX]        ;recover orig char
  278.         PUSH    BX            ;save registers before outputting char
  279.         PUSH    CX
  280.         XOR    BX,BX        ;clear BX, sets page to 0
  281.         MOV    CX,1            ;1 char to display
  282.         MOV    AH,0AH        ;int fn 10D
  283.         INT    10H            ;display char at cursor posn
  284.         POP    CX
  285.         POP    BX
  286. ;
  287.         RET
  288. ;    
  289. DISP_CHAR    ENDP
  290. ;
  291. ;******************************************************************************
  292. ;
  293. ;*************BUZZER s/r*******************************************************
  294. ;sounds buzzer
  295. ;
  296. BUZZER    PROC    NEAR
  297.         MOV    AL,07        ;buzzer param
  298.         CALL    PRINTER
  299.         RET
  300. BUZZER    ENDP
  301. ;
  302. ;*************DEFAULT S/R*******************************************************
  303. ;
  304. ;changes TESTPR to 1 through call to PRINTER, so PGMEND detects successfull output
  305. ;No params found, set default,
  306. ;remove ';' from wanted default instructions
  307. ;change default message 'd_msg' when changing defaults 
  308. ;
  309. ;*******************************************************************************
  310. ;
  311. ;        ORG    300H
  312. ;
  313. DEFAULT    PROC    NEAR
  314. ;
  315.         MOV    AL,18H        ;cancel
  316.         CALL    PRINTER
  317.         MOV    AL,30H        ;reset:data processing
  318.         CALL    ESCAPE        ;=pica, 10/"
  319.         MOV    AL,35H        ;logical TOF
  320.         CALL    ESCAPE        
  321. ;
  322. ;******************************************************************************
  323. ;If no param codes entered then give param codes.
  324. ;Notify of default execution and type.
  325. ;Defaults are set before displaying message.
  326. ;If print echoed, will see default font on printer.
  327. ;******************************************************************************
  328. ;
  329.          PUSH    DX            ;save DX
  330. ;        LEA    DX,prog_name    ;prog name
  331. ;        CALL    PRMSG        ;print message
  332.         LEA    DX,d_msg        ;default params send to screen
  333.         CALL    PRMSG    
  334. ;
  335.         LEA    DX,inkey_msg    ;msg for "inkey to continue"
  336.         CALL    PRMSG
  337.         POP     DX
  338. ;
  339.         MOV     AH,0        ;wait for key press
  340.         INT    16H        ;call keyboard_io at F000:E82E, wait for char
  341.         POP    AX        ;ignore char in AL
  342. ;
  343.         PUSH DX
  344.         LEA    DX,p_msg    ;param codes available send to screen
  345.         CALL    PRMSG
  346.         POP    DX        ;recover DX
  347. ;
  348.         RET
  349. DEFAULT    ENDP
  350. ;
  351. ;******************************************************************************
  352. ;PARAMETER DECISION AND ACTION
  353. ;******************************************************************************
  354. ;
  355. ;        ORG    400H
  356. ;
  357. ALPHA_ENTRY    PROC    NEAR
  358. ;
  359. PARM_C:    CMP    AL,'C'        ;condense?
  360.         JNE    PARM_E        ;17/"
  361.         ;
  362.         MOV    AL,1DH
  363.         CALL    PRINTER        ;condensed doesn't need escape
  364.         JMP    END_PARM
  365. ;
  366. PARM_E:    CMP    AL,'E'        ;elite? 12/"
  367.         JNE    PARM_F
  368.         ;
  369.         MOV    AL,1DH        ;elite (12 char per inch )
  370.         CALL    PRINTER
  371.         JMP    END_PARM
  372. ;    
  373. PARM_F:    CMP    AL,'F'        ;form feed?
  374.         JNE    PARM_L
  375.         ;
  376.         MOV    AL,0CH        ;advance paper to top of form
  377.         CALL    PRINTER
  378.         JMP    END_PARM
  379. ;
  380. PARM_L:    CMP    AL,'L'        ;line feed
  381.         JNE    PARM_M
  382.         ;
  383.         MOV    AL,0AH
  384.         CALL    PRINTER
  385.         JMP     END_PARM
  386. ;
  387. PARM_M:    CMP    AL,'M'        ;parm to 'eMphasise'?
  388.         JNE    PARM_N        ;half dot horizontal spacing, double strike
  389.         ;
  390.         MOV    AL,54H        ;Oki code for eMphasised font
  391.         CALL    ESCAPE
  392.         JMP    END_PARM
  393. ;
  394. PARM_N:    CMP    AL,'N'        ;set eNhanced mode?
  395.         JNE    PARM_P        ;half dot vertical spacing, double strike  
  396.         ;
  397.         MOV    AL,48H        ;eNlarged
  398.         CALL ESCAPE
  399.         JMP    END_PARM
  400. ;
  401. PARM_P:    CMP     AL,'P'        ;pica 10/"
  402.         JNE    PARM_R
  403.         ;
  404.         MOV    AL,1EH
  405.         CALL    PRINTER
  406.         JMP    END_PARM
  407. ;
  408. PARM_R:    CMP    AL,'R'        ;reinitialise printer?
  409.         JNE    PARM_S
  410.         ;
  411.         MOV    AL,18H        ;cancel
  412.         CALL    PRINTER
  413.         MOV    AL,30H        ;data processing mode
  414.         CALL    ESCAPE        ;pica is normal type size=10 char per inch
  415.         MOV    AL,35H
  416.         CALL    ESCAPE        ;logical TOF
  417.         JMP     END_PARM        
  418. ;
  419. PARM_S:    CMP    AL,'S'        ;.LST and program files, which are wider than 80 
  420.         JNE    PARM_T        ;=cm
  421.         ;
  422.         MOV    AL,1DH        ;condensed 
  423.         CALL    PRINTER
  424.         MOV    AL,54H        ;emphasised
  425.         CALL ESCAPE
  426.         JMP     END_PARM
  427. ;
  428. PARM_T:    CMP    AL,'T'        ;Set tabs
  429.         JE    P_T1
  430.         JMP    PARM_U        ;long jump
  431.         ;
  432. P_T1:    MOV    AL,09H        ;tab on
  433.         CALL    ESCAPE
  434.         MOV    AL,"0"
  435.         CALL    PRINTER
  436.         MOV    AL,"5"
  437.         CALL    PRINTER
  438.         MOV    AL,","
  439.         CALL    PRINTER        ;tab=05
  440.         ;
  441.         MOV    AL,"1"
  442.         CALL    PRINTER
  443.         MOV    AL,"0"
  444.         CALL    PRINTER
  445.         MOV    AL,","    
  446.         CALL    PRINTER        ;tab=10
  447.         ;
  448.         MOV    AL,"1"
  449.         CALL    PRINTER
  450.         MOV    AL,"5"
  451.         CALL    PRINTER
  452.         MOV    AL,","
  453.         CALL    PRINTER        ;tab=15
  454.         ;
  455.         MOV    AL,"2"
  456.         CALL    PRINTER
  457.         MOV    AL,"0"
  458.         CALL    PRINTER
  459.         MOV    AL,","
  460.         CALL    PRINTER        ;20
  461.         ;
  462.         MOV    AL,"2"
  463.         CALL    PRINTER
  464.         MOV    AL,"5"
  465.         CALL    PRINTER
  466.         MOV    AL,","
  467.         CALL    PRINTER        ;25
  468.         ;
  469.         MOV    AL,"3"
  470.         CALL    PRINTER
  471.         MOV    AL,"0"
  472.         CALL    PRINTER
  473.         MOV    AL,","
  474.         CALL    PRINTER        ;30
  475.         ;
  476.         MOV    AL,"3"
  477.         CALL    PRINTER
  478.         MOV    AL,"5"
  479.         CALL    PRINTER
  480.         MOV    AL,","
  481.         CALL    PRINTER        ;35
  482.         ;
  483.         MOV    AL,"4"
  484.         CALL    PRINTER
  485.         MOV    AL,"0"
  486.         CALL    PRINTER
  487.         MOV    AL,","
  488.         CALL    PRINTER        ;40
  489.         ;
  490.         MOV    AL,"4"
  491.         CALL    PRINTER
  492.         MOV    AL,"5"
  493.         CALL    PRINTER
  494.         MOV    AL,","
  495.         CALL    PRINTER        ;45
  496.         ;
  497.         MOV    AL,"5"
  498.         CALL    PRINTER
  499.         MOV    AL,"0"
  500.         CALL    PRINTER
  501.         MOV    AL,","
  502.         CALL    PRINTER        ;50
  503.         ;
  504.         MOV    AL,"5"
  505.         CALL    PRINTER
  506.         MOV    AL,"5"
  507.         CALL    PRINTER
  508.         MOV    AL,","
  509.         CALL    PRINTER        ;55
  510.         ;
  511.         MOV    AL,"6"
  512.         CALL    PRINTER
  513.         MOV    AL,"0"
  514.         CALL    PRINTER
  515.         MOV    AL,","
  516.         CALL    PRINTER        ;60
  517.         ;
  518.         MOV    AL,0DH        ;<cr>=end of tab entry
  519.         CALL    PRINTER
  520.         JMP    END_PARM
  521. ;
  522. PARM_U:    CMP    AL,'U'        ;Underline on
  523.         JNE    PARM_V
  524.         ;
  525.         MOV    AL,43H
  526.         CALL    ESCAPE
  527.         JMP    END_PARM
  528. ;
  529. PARM_V:    CMP    AL,'V'        ;Underline off
  530.         JNE    PARM_W
  531.         ;
  532.         MOV    AL,44H
  533.         CALL    ESCAPE
  534.         JMP    END_PARM
  535. ;
  536. PARM_W:    CMP    AL,'W'        ;wide, works with CP&E
  537.         JNE    PARM_X
  538.         ;
  539.         MOV    AL,1FH
  540.         CALL    PRINTER
  541.         JMP    END_PARM
  542. ;
  543. PARM_X:    CMP    AL,'X'        ;teXt mode=Oki correspondance mode
  544.         JNE    ERROR_3        ;invalid alphabetic parm found, send errors
  545.         ;
  546.         MOV     AL,31H        
  547.         CALL ESCAPE
  548. ;
  549. END_PARM:    RET                ;exit s/r 
  550. ;
  551. ;Invalid alphabetical parameter found
  552. ;
  553. ERROR_3:    PUSH    DX            ;write error message
  554.         LEA    DX,err_msg_3    ;invalid parm msg
  555.         CALL    PRMSG
  556.         POP    DX
  557. ;
  558.         CALL    DISP_CHAR
  559. ;
  560. ERROR_4:    PUSH    DX
  561.         LEA    DX,err_msg_4    ;parm ignored, execution continued
  562.         CALL    PRMSG
  563. ERROR_5:    LEA    DX,err_msg_5    ;where to find valid parm list
  564.         CALL    PRMSG
  565.         POP    DX
  566.         RET                ;to main, 
  567. ;
  568. ALPHA_ENTRY    ENDP
  569. ;
  570. ;******************************************************************************
  571. ;Program data
  572. ;
  573. ;        ORG    600H
  574. ;
  575. ;
  576.     p_msg    db    "Command Format:-OKI [/xx] [a][b]                                     ",cr,lf
  577.             db    "/xx    -heX input (must be paired)                                      ",cr,lf
  578.             db    "                                                                      ",cr,lf
  579.             db    "C    -Condensed=17/inch                                               ",cr,lf
  580.             db    "E    -Elite    =12/inch                  ***************************  ",cr,lf
  581.             db    "F    -Form feed                          *Some Command Combinations*  ",cr,lf
  582.             db    "L    -Line feed                          *                         *  ",cr,lf
  583.             db    "M    -eMphasized (hor double)            *         Type size       *  ",cr,lf
  584.             db    "N    -eNhanced   (ver double)            *       C   E   P   X     *  ",cr,lf
  585.             db    "P    -Pica,    =10/inch                  *  U    +   +   +   +     *  ",cr,lf
  586.             db    "R    -Reset, logical TOF, Pica           *  M    -   +   +   +     *  ",cr,lf
  587.             db    "S    -liSt, =c m, .LST files>80 chars    *  N    -   +   +   +     *  ",cr,lf
  588.             db    "T    -set Tabs; 5,10,15...60             *  W    +   +   +   +     *  ",cr,lf
  589.             db    "U    -Underline on                       *                         *  ",cr,lf
  590.             db    "V    -Underline off                      ***************************  ",cr,lf
  591.             db    "W    -Wide (double)                                                   ",cr,lf
  592.             db    "X    -teXt= Okidata92 correspondance quality                          ",cr,lf
  593.             db    "/    -Hex on for two digits.                                          ",cr,lf
  594.             db    "                                                                     ",cr,lf
  595.             db    "     -Blanks, commas ignored on command line.                         ",cr,lf
  596.             db    "     UC/lc not differentiated. Hex and alphabetical mixed is OK.     ",cr,lf
  597.             db    "     Some commands undo other commands.                              ",cr,lf,"$"
  598. ;
  599. ;******************************************************************************
  600. ;
  601. success_msg    db    cr,lf,"OKI.COM     Ritari/Mack 1985",cr,lf,"$"
  602. ;
  603. prog_name    db    cr,lf
  604.             db    "OKI.COM         written  by Douglas Ritari, 1983",cr,lf
  605.             db    "              modified by Joseph  Mack  , 1985",cr,lf,lf,"$"
  606. ;
  607. d_msg        db    cr,lf,"These current default codes have been sent to the printer:",,
  608. ;
  609. ;put command(s) parameters, for current default, into next line, between double quotes 
  610. ;
  611.             db    "R"
  612.             db    cr,lf,lf,"$"
  613. ;
  614.     inkey_msg    db    cr,lf,"Press any key to continue.                                      ",cr,lf,"$"
  615.     err_msg_1    db    cr,lf,"Invalid hex digit found(ie not 0-0FH):$",
  616.     err_msg_2    db    cr,lf,"No action taken.                                                ",cr,lf,"$"
  617.     err_msg_3    db    cr,lf,"Invalid alphabetical character:$",
  618.     err_msg_4    db    cr,lf,"Character ignored, execution continued.$"
  619.     err_msg_5    db    cr,lf,"Valid parameters available by returning to DOS and typing <OKI>.",cr,lf,"$"
  620.     err_msg_6    db    cr,lf,"Unpaired hex parameter:$",
  621.     err_msg_8    db    cr,lf,"Character ignored, execution terminated.                        ",cr,lf,"$"
  622.     got_here_msg    db    cr,lf,"got here                                                   ",cr,lf,"$"                                    
  623.     prn_err_bit_3    db    cr,lf,"printer I/O error.                                         ",cr,lf,"$"
  624.     prn_err_bit_5    db    cr,lf,"printer out of paper.                                      ",cr,lf,"$"        
  625.  
  626. ;
  627. ;******************************************************************************
  628. ;
  629. ;
  630. MAIN    ENDS
  631.         END    START
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.